home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 April
/
EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso
/
EARCD
/
biz
/
demo
/
Reflections4De.lha
/
Ref4Demo
/
skripte.lha
/
oval.skr
< prev
next >
Wrap
Text File
|
1996-07-26
|
2KB
|
122 lines
REFSKRIPT
;Aufruf: oval <radius> <breite> <npkte> <name> */
GET_N_PARAMS
GET_RESULT res
IF_EQUAL_GOTO res 4 w1
RETURN 0
>w1:
GET_PARAM_NR 1
GET_RESULT rad
GET_PARAM_NR 2
GET_RESULT breite
GET_PARAM_NR 3
GET_RESULT np
GET_PARAM_NR 4
GET_RESULT name
FUNCTION breite-(rad*2)
GET_RESULT verschieb
IF_LESS_GOTO rad 0.00001 error
IF_LESS_GOTO np 3 error
IF_LESS_GOTO verschieb 0 error
GOTO w2
>error:
RETURN 0
>w2:
; Anzahl punkte durch vier teilbar machen */
MOD np 4
GET_RESULT np1
IF_EQUAL_GOTO np1 0 w2a
FUNCTION np+4-np1
GET_RESULT np
>w2a:
/* Makro für Polygon-kreis aufrufen */
;param=rad np name
PRINT kreis.skr ( rad np name )
CALL kreis.skr rad np name
GET_RESULT name
POL_EXIST name
GET_RESULT res
IF_STR_EQUAL_GOTO res JA w3
RETURN 0
>w3:
IDIV np 4
GET_RESULT i
GET_POL_PKT_KOORD name i
GET_RESULT res
COPY_WORD res 1
GET_RESULT x
COPY_WORD res 2
GET_RESULT y
SUB rad y
GET_RESULT delta
; Jetzt alle Punkte mit x>0 um verschieb verschieben */
DIV rad np
GET_RESULT r1
DIV r1 100
GET_RESULT r1
SET_VAR i 1
>doloop1:
;DO i=1 to np
SUB i 1
GET_RESULT i1
GET_POL_PKT_KOORD name i1
GET_RESULT res
COPY_WORD res 1
GET_RESULT x
COPY_WORD res 2
GET_RESULT y
FUNCTION ABS(x)
GET_RESULT absx
IF_GREATER_GOTO absx r1 else
; punkte auf 0-achse */
FUNCTION x+(verschieb/2)
GET_RESULT x
POL_PKT name i1 x y
GOTO w3a
>else:
IF_LESS_GOTO x 0 w3a
ADD x verschieb
GET_RESULT x
POL_PKT name i1 x y
>w3a:
ADD i 1
GET_RESULT i
PRINT doloop i
IF_GREATER_GOTO i np fert1
GOTO doloop1
>fert1:
FUNCTION (np/4)
GET_RESULT i
FUNCTION np-(np/4)
GET_RESULT j
GET_POL_PKT_KOORD name i
GET_RESULT res
COPY_WORD res 1
GET_RESULT x
COPY_WORD res 2
GET_RESULT y
SUB y delta
GET_RESULT y
POL_PKT name i x y
GET_POL_PKT_KOORD name j
GET_RESULT res
COPY_WORD res 1
GET_RESULT x
COPY_WORD res 2
GET_RESULT y
ADD y delta
GET_RESULT y
POL_PKT name j x y
RETURN name